import java.io.FileInputStream;
import java.io.IOException;

/**
     java.io.InputStream:字节输入流,表示字节输入流的所有类的超类。
     定义了所有子类共性的方法:
         int read()从输入流中读取数据的下一个字节。
         int read(byte[] b) 从输入流中读取一定数量的字节，并将其存储在缓冲区数组 b 中。
         void close() 关闭此输入流并释放与该流关联的所有系统资源。

     FileInputStream:文件字节输入流
     作用:把硬盘文件中的数据,读取到内存中使用

     构造方法:
         FileInputStream(String name)
         FileInputStream(File file)
     参数:读取文件的数据源
         String name:文件的路径
         File file:文件

     字节输入流的使用步骤(重点):
         1.创建FileInputStream对象,构造方法中绑定要读取的数据源
         2.使用FileInputStream对象中的方法read,读取文件
         3.释放资源
 */
public class Demo02FileInputStream {
    public static void main(String[] args) throws IOException {
//1.创建FileInputStream对象,构造方法中绑定要读取的数据源
        FileInputStream fis = new FileInputStream("10_字节流,字符流\\outputStream.txt");
        //2.使用FileInputStream对象中的方法read,读取文件

        //int read()读取文件中的一个字节并返回,读取到文件的末尾返回-1
//        int len = fis.read();
//        System.out.println(len);//97 a
//
//        len = fis.read();
//        System.out.println(len);// 48 0
//
//        len = fis.read();
//        System.out.println(len);//48 0
//
//        len = fis.read();
//        System.out.println(len);//65 A
//
//        len = fis.read();
//        System.out.println(len);//66B

        byte[] bytes = new byte[1024];//起到缓冲作用,存储每次读取到的多个字节
        int len1 = 0; //记录,每次读取的有效字节个数
        while((len1 = fis.read(bytes))!=-1){
//            System.out.print(len1);//abc 不用bytes的话 会全是字节
            System.out.println(new String(bytes,0,len1)); //使用bytes,字符也可以显示
        }

        //3.释放资源
        fis.close();
    }

}
